﻿

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using System.Data;
using System.IO;
using System.Configuration;
using System.Transactions;
using System.Data.Linq;
using System.ComponentModel;
using UtilityExtensions;

namespace BOL.UI
{
    public class GetUIExcel
    {
        int _count;



        public int Count(int idProyecto, int idEtapa, 
                      
                          string tipoUIStr,
                           string idestadoStr,
                           string idLocalizacionStr,
                           string idTipoModeloStr,
                           string codigoStr,
                           bool bitVerAnula,
                             int startRowIndex,
                             int maximumRows,
                            string sortExpression)
        {
            return _count;
        }



        private IQueryable<UILoteExcel> ApplySelect_UILoteListInfo(int idProyeto,int idEtapa,
                                                                   int idLocalizacion,
                                                                   string codigoVenta,
                                                                   int tipoVivienda,
                                                                   int tipoModelo,
                                                                   int idEstado)
        {
            var q = from a in DbUtil.Db.UIs
                    where
                    (idProyeto==0?a.Etapa.idProyecto!=0:a.Etapa.idProyecto==idProyeto)
                    & (idEtapa == 0 ? a.idEtapa != 0 : a.idEtapa == idEtapa)
                    & (idLocalizacion == 0 ? a.idLocalizacion != 0 : a.idLocalizacion== idLocalizacion)
                    & (a.codigo + a.descripcion).Contains(codigoVenta)
                     & (idEstado ==0 ? a.idEstado != 0 : a.idEstado == idEstado)
                     & (tipoVivienda == 0 ? a.idTipoUI != 0 : a.idTipoUI == tipoVivienda)
                      & (tipoModelo == 0 ? a.idTipoModelo != 0 : a.idTipoModelo == tipoModelo)     
                    select new  UILoteExcel
                    {
                         activo=a.bitActivo==true?"Si":"No",
                         areaOcupada=a.areaOcupada.Value.ToString(),
                         areaTechada=a.areaTechada.Value.ToString(),
                          areaTerreno=a.areaTerreno.Value.ToString(),
                           banio1=a.banio1.Value.ToString(),
                           banio2=a.banio2.Value.ToString(),
                           banio3=a.banio3.Value.ToString(),
                           caracteristica=a.GrupoDatoitem.descripcion,
                           cocina=a.cocina.Value.ToString(),
                           codigo=a.codigo,
                           comedor=a.comedor.Value.ToString(),
                           comentario=a.comentario,
                           derecho=a.derecha,
                            descripcion=a.descripcion,
                         observacion = a.EstadoItem.descripcion,

                             direccion=a.direccion,
                         dormitorio1 = a.dormitorio1.Value.ToString(),
                         dormitorio2 = a.dormitorio2.Value.ToString(),
                         dormitorio3 = a.dormitorio3.Value.ToString(),
                         dormitorio4 = a.dormitorio4.Value.ToString(),
                          estado=a.EstadoItem.descripcion,
                           etapa=a.Etapa.descripcion.ToUpper(),
                            fechaEntrega=a.fechaFin.ToShortDateString(),
                             fondo=a.fondo,
                              frente=a.frente,
                                izquierdo=a.izquierdo,
                                lavanderia=a.labanderia.Value.ToString(),
                                localizacion=a.UILocalizacion.descripcion,
                                numPartida=a.numPartida,
                                numPisos=a.numPiso.Value.ToString(),
                                patio=a.patio.Value.ToString(),
                                PatioLavanderia=a.patioLabanderia.Value.ToString(),
                                piso=a.numPiso.Value.ToString(),
                                plazoEntrega=a.plazoMaxEntrega.ToString(),
                                precio=a.Moneda.simbol+""+a.precio.ToString(),
                                referencia=a.referencia,
                                sala=a.sala.Value.ToString(),
                                salaComedor=a.salaComedor.Value.ToString(),
                                salaComedorCocina=a.salaComedorCocina.Value.ToString(),
                                tipoModelo=a.UIModeloTipo.descripcion,
                                urbanizacion=a.urbanizacion,
                                zonaComun=a.zonaComun.Value.ToString(),
                         aires = a.patio.Value.ToString(),                 
                             

                        
                    };
            return q;
        }


        private IQueryable<UIDepartamentoExcel> ApplySelect_UIDepositoListInfo(int idProyeto, int idEtapa,
                                                                   int idLocalizacion,
                                                                   string codigoVenta,
                                                                   int tipoVivienda,
                                                                   int tipoModelo,
                                                                   int idEstado)
        {
            var q = from a in DbUtil.Db.UIs
                    where
                    (idProyeto == 0 ? a.Etapa.idProyecto != 0 : a.Etapa.idProyecto == idProyeto)
                    & (idEtapa == 0 ? a.idEtapa != 0 : a.idEtapa == idEtapa)
                    & (idLocalizacion == 0 ? a.idLocalizacion != 0 : a.idLocalizacion == idLocalizacion)
                    & (idLocalizacion == 0 ? a.idLocalizacion != 0 : a.idLocalizacion == idLocalizacion)
                    & (a.codigo + a.descripcion).Contains(codigoVenta)
                     & (idEstado == 0 ? a.idEstado != 0 : a.idEstado == idEstado)
                     & (tipoVivienda == 0 ? a.idTipoUI != 0 : a.idTipoUI == tipoVivienda)
                      & (tipoModelo == 0 ? a.idTipoModelo != 0 : a.idTipoModelo == tipoModelo) 
                    select new UIDepartamentoExcel
                    {
                        activo = a.bitActivo == true ? "Si" : "No",
                        areaOcupada = a.areaOcupada.Value.ToString(),
                        areaTechada = a.areaTechada.Value.ToString(),
                        areaTerreno = a.areaTerreno.Value.ToString(),
                        
                        caracteristica = a.GrupoDatoitem.descripcion,
                        
                        codigo = a.codigo,
                        observacion=a.EstadoItem.descripcion,
                        comentario = a.comentario,
                        derecho = a.derecha,
                        descripcion = a.descripcion,

                        direccion = a.direccion,
                        estado = a.EstadoItem.descripcion.ToUpper(),
                        etapa = a.Etapa.descripcion,
                        fechaEntrega = a.fechaFin.ToShortDateString(),
                        fondo = a.fondo,
                        frente = a.frente,
                        izquierdo = a.izquierdo,
                        localizacion = a.UILocalizacion.descripcion,
                        numPartida = a.numPartida,
                        piso = a.numPiso.Value.ToString(),
                        plazoEntrega = a.plazoMaxEntrega.ToString(),
                        precio = a.Moneda.simbol + "" + a.precio.ToString(),
                        referencia = a.referencia,
                        tipoModelo = a.UIModeloTipo.descripcion,
                        urbanizacion = a.urbanizacion,
                         banio=a.banio.ToString(),
                          dormitorio=a.dormitorios.ToString()
                        


                    };
            return q;
        }

        



        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<UILoteExcel> ExecuteLote(int  idProyecto,
                                               int idEtapa,
                                               int idLocalizacion,
                                               string codigoVenta,
                                               int tipoVivienda,
                                               int tipoModelo,
                                               int idEstado )
        {
            if (!codigoVenta.HasValue())
                codigoVenta = "";
        


            var q = ApplySelect_UILoteListInfo(idProyecto,idEtapa,idLocalizacion,codigoVenta,tipoVivienda,tipoModelo,idEstado);


            _count = q.Count();

            //q = ApplySort(q, sortExpression);
            return q;//.Skip(startRowIndex).Take(maximumRows);
        }



        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<UIDepartamentoExcel> ExecuteDepartamento(int idProyecto,
                                               int idEtapa,
                                               int idLocalizacion,
                                               string codigoVenta,
                                               int tipoVivienda,
                                               int tipoModelo,
                                               int idEstado)
        {
            if (!codigoVenta.HasValue())
                codigoVenta = "";



            var q = ApplySelect_UIDepositoListInfo(idProyecto, idEtapa, idLocalizacion, codigoVenta, tipoVivienda, tipoModelo, idEstado);


            _count = q.Count();

            //q = ApplySort(q, sortExpression);
            return q;//.Skip(startRowIndex).Take(maximumRows);
        }

    }
}
